package com.cj.sys.dao.security;

import java.util.Date;

import org.springframework.stereotype.Repository;

import com.cj.common.orm.hibernate.HibernateDao;
import com.cj.sys.entity.security.Dept;
import com.cj.sys.service.ServiceException;

@Repository
public class DeptDao extends HibernateDao<Dept, Long> {
	@Override
	public void save(Dept entity) {
		if (entity.getParent() != null) {
			entity.setFullName(this.load(entity.getParent().getId())
					.getFullName()
					+ "/" + entity.getName());
		} else
			entity.setFullName(entity.getName());
		if (entity.getId() != null) {
			Dept oldDept = this.load(entity.getId());
			if (entity.getParent() != null
					&& !entity.getParent().equals(oldDept.getParent())) {
				if (entity.getId() != null
						&& entity.getId().equals(entity.getParent().getId()))
					throw new ServiceException("上级部门不能是本部门！");
			}
		}
		if (entity.getId() == null)
			entity.setCreateTime(new Date());
		if(isPropertyUniqueById("code", entity.getCode(), entity.getId()))
			super.save(entity);
		else
			throw new ServiceException("部门代码已存在！" + entity.getCode());
	}
}
